A large variety of systems, such as mechanical systems, electrical systems, biological systems, and/or computer systems, may be represented as dynamic systems. Computational tools have been developed to model, simulate, and/or analyze dynamic systems. A computational tool may represent a dynamic system using a graphical model. The graphical model may include blocks that may represent components of the dynamic system. The blocks may be connected to represent relationships between the components. The computational tool may simulate the graphical model and may provide results of the simulation. One class of dynamic systems includes multi-core embedded computer systems in which sets of operations (e.g., threads, processes, etc.) may execute concurrently and utilize processing capabilities on multiple processing cores. A graphical model may be used to simulate the execution of such systems. However, developing a model for simulating multi-core systems may be challenging.
More specifically, efficient use of real-time multi-core embedded systems implies maximally concurrent execution of the two or more periodic threads of execution that make up an application. A common scenario is for the periodic threads to have an integral timing relationship (N, 2N, . . . 5N, etc.) where N is some base rate period, additionally being driven from a common timing source. Communication between these threads necessitates one of several approaches to ensure robust data sharing.
However, there are several drawbacks with conventional techniques of performing simulations of multicore, concurrent thread execution, such as the introduction of serialization of thread execution (in contrast to true concurrency), reducing hardware utilization and execution performance, and difficulties in capturing the temporal behavior of a real-time application in a modeled ‘offline’ simulation of the application. These difficulties lead to lower-fidelity simulations and thread synchronization for implementing the data sharing.